This application is related to the following applications, all of which are filed on the same day and assigned to the same assignee as the present application:
xe2x80x9cQuorum Resource Arbitrator Within a Storage Clusterxe2x80x9dxe2x80x94U.S. patent application Ser. No. 09/449,579,
xe2x80x9cStorage Management System Having Common Volume Managerxe2x80x9dxe2x80x94U.S. patent application Ser. No. 09/449,577,
xe2x80x9cStorage Management System Having Abstracted Volume Providersxe2x80x9dxe2x80x94U.S. patent application Ser. No. 09/450,364,
xe2x80x9cVolume Configuration Data Administrationxe2x80x9dxe2x80x94U.S. patent application Ser. No. 09/451,300.
xe2x80x9cVolume Stacking Modelxe2x80x9dxe2x80x94U.S. patent application Ser. No. 09/451,219.
This invention relates generally to computer data storage systems, and more particularly to migrating volumes in a data storage system.
A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever. The following notice applies to the software and data as described below and in the drawing hereto: Copyright xe2x96xa1 1999 Microsoft Corporation, All Rights Reserved.
As computer systems have evolved so has the availability and configuration of data storage devices, such as magnetic or optical disks. For example, these storage devices can be connected to the computer system via a bus, or they can be connected to the computer system via a wired or wireless network. In addition, the storage devices can be separate or co-located in a single cabinet.
A storage volume is a software abstraction of the underlying storage devices and is commonly the smallest self-contained unit of storage exposed by an operating system and administered by a file system. Storage volumes abstract the physical topology of the storage devices and may be a fraction of a disk, a whole disk or even multiple disks that are bound into a contiguous range of logical blocks.
Volumes are constructed from one or more extents, with each extent being a contiguous storage address spaces presented by the underlying storage device. An extent is typically characterized by the size of the address space and a starting offset for the address space from a base of the media. Volume mapping is the process of mapping the contiguous address space presented by the volume onto the usually non-contiguous storage address spaces of the underlying extents. Volume mappings are either implemented on a specialized hardware controller, referred to as a hardware volume provider, or in software by a software volume provider.
Volume mappings may be used to increase the fault tolerance, performance, or capacity characteristics of the underlying storage devices. For example, a technique for improving fault tolerance, known as mirroring or plexing a disk, uses multiple disks. When data is written to one disk the data is also written to a second disk; thus the second disk is a xe2x80x9cmirror imagexe2x80x9d of the first disk. If one disk should fail the other disk is still available for use and has an exact copy of the information on the first disk.
In addition RAID numbers are often used to identify storage volume mappings. A RAID, or Redundant Array of Independent Disks, provides the ability to lose an extent without losing volume data. Access to the volume may be slower or more costly, but is not interrupted by the failure of the underlying extent. RAID1 implements mirroring. RAID3 and above all implement some sort of stripe with parity scheme; the different number indicates the arrangement of the data and check-data (or parity) extents. Striping is a mechanism where data for a file or file system is distributed among several different disks.
Volume providers commonly group logical volumes into what are known as xe2x80x9cdiskpacksxe2x80x9d in order to simplify volume management. The diskpack then is a collection of logical volumes and the underlying disks. Diskpacks provide transitive closure for the volumes contained in the disk pack and may provide group sanity checking to ensure volume configuration correctness.
Occasionally, it is necessary to xe2x80x9cmigratexe2x80x9d a volume from one diskpack to another. An example of a situation in which migration is required occurs when data is being partitioned among servers. Other examples include the replicating the data in order to perform a parallel analysis (e.g., data mining), or archiving the data.
Therefore, there is a need in the art for a-system to perform volume migration. The system should preserve transitive closure of the migrated volumes, that is, the migration, or export, should preserve relationships that exist both within a volume, and between volumes. In addition, the system should automatically determine the disks or other components of the storage system that must be included in order to successfully migrate the volume. Finally, the system should implement a flexible unit of transfer for migrating volumes between diskpacks and between computer systems.
The above-mentioned shortcomings, disadvantages and problems are addressed by the present invention, which will be understood by reading and studying the following specification.
In one such system for migrating a volume from a source diskpack to a receiving diskpack, an export application communicates with a logical volume provider to automatically determine the minimal subset of disks, volumes and volume extents of the source diskpack that should be included in the export such that transitive closure is preserved. This minimal subset is referred to as a platter. The logical volume subsystem can be a hardware provided subsystem or it can be implemented as a software component. The logical volume subsystem, at the direction of the export application, causes the disks in the platter to be removed from the source diskpack and associated with the receiving diskpack.
In one method used to migrate a volume or set of volumes between diskpacks, a program executing the method receives an identifier for a volume that is to be exported. The method then searches the disks containing the identified volume extents for extents belonging to other volumes (friend volumes). The disks on which the friend volumes reside are added to the platter. The method then recursively searches for further volume extents on disks occupied by the friend volumes. The method proceeds in this manner until no new disks are discovered. The platter is then exported from the source-diskpack and imported into the receiving diskpack.
In an alternative method, the volume extents on the diskpack are placed on alternative disks in a manner that minimizes the number of friend volumes, thereby reducing the number of disks in the platter.
The volume migration system and method summarized above, and various other aspects of the system will be described in detail in the next section.